package com.coupon.admin.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 盲盒任务实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("blind_box_task")
public class BlindBoxTask {
    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 任务名称
     */
    private String name;
    
    /**
     * 任务描述
     */
    private String description;
    
    /**
     * 任务类型：SIGN_IN(签到), SHARE(分享), REVIEW(评价), BROWSE(浏览), PURCHASE(购买)
     */
    private String type;
    
    /**
     * 任务难度：EASY(简单), MEDIUM(中等), HARD(困难)
     */
    private String difficulty;
    
    /**
     * 完成条件（JSON格式）
     */
    private String conditions;
    
    /**
     * 奖励池大小
     */
    private Integer rewardPoolSize;
    
    /**
     * 奖励配置（JSON格式）
     */
    private String rewardConfig;
    
    /**
     * 状态：ACTIVE(启用), INACTIVE(禁用)
     */
    private String status;
    
    /**
     * 开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 结束时间
     */
    private LocalDateTime endTime;
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记
     */
    @TableLogic
    private Integer deleted;
}

/**
 * 用户盲盒任务记录实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user_blind_box_task")
class UserBlindBoxTask {
    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 用户ID
     */
    private Long userId;
    
    /**
     * 任务ID
     */
    private Long taskId;
    
    /**
     * 完成进度
     */
    private Integer progress;
    
    /**
     * 完成状态：IN_PROGRESS(进行中), COMPLETED(已完成), REWARDED(已奖励)
     */
    private String status;
    
    /**
     * 完成时间
     */
    private LocalDateTime completeTime;
    
    /**
     * 获得奖励
     */
    private String reward;
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记
     */
    @TableLogic
    private Integer deleted;
}
